package cn.wolfcode.luowowo.redis.key;

import cn.wolfcode.luowowo.util.Consts;
import lombok.Getter;

@Getter
public enum RedisKeys {

    //api接口的防刷key对象实例
    BRUSH_PROOF("brush_proof:",60L),

    //短信验证码的key对象实例
    VERIFY_CODE("verify_code:", Consts.VERIFY_CODE_VAI_TIME * 60L),

    //计算器的key对象实例  用来计算发送验证码的次数
    COUNTER("counter", Consts.VERIFY_CODE_VAI_TIME * 60L),

    //攻略统计数据的key对象实例  用来统计攻略的点击数收藏数回复数等数据
    STRATEGY_STATIS_VO("strategy_statis_vo", -1L),  //-1代表无有效时间

    //游记统计数据的key对象实例  用来统计攻略的点击数收藏数回复数等数据
    TRAVEL_STATIS_VO("travel_statis_vo", -1L),  //-1代表无有效时间

    //基于用户的攻略收藏的key对象实例
    USER_STRATEGY_FAVOR("user_strategy_favor", -1L),    //-1代表无有效时间

    //基于用户的攻略点赞(顶)的key对象实例
    STRATEGY_THUMBUP("strategy_thumbup", -1L),    //-1代表无有效时间

    //用户登录令牌
    USER_LOGIN_TOKEN("user_login_token", Consts.USER_INFO_TOKEN_VAI_TIME * 60L);

    private String prefix;  //redis中 key的前缀
    private Long time;      //redis中 key的有效时间 单位:秒/s

    private RedisKeys(String prefix, Long time) {
        this.prefix = prefix;
        this.time = time;
    }

    //拼接 redis的 key
    public String join(String... value) {
        StringBuilder stringBuilder = new StringBuilder(60);
        stringBuilder.append(this.prefix);
        for (String v : value) {
            stringBuilder.append(":").append(v);
        }
        return stringBuilder.toString();
    }
}


